package org.xx.armory.db;

import java.util.Set;

/**
 * SQL查询参数。
 *
 * @author Dev
 */
public interface Parameter {
    /**
     * 获取参数的名字。
     *
     * @return 参数的名字。
     */
    String getName();

    /**
     * 获取参数类型。
     *
     * @return 参数的类型。
     */
    ParameterType getParameterType();

    /**
     * 获取参数的传入传出方式。
     *
     * @return 参数的传入传出方式。
     */
    Set<ParameterDirection> getDirections();

    /**
     * 获取参数的值。
     *
     * @return 参数的值。
     */
    Object getValue();

    /**
     * 设置参数的值。
     *
     * @param value
     *         参数的值。
     */
    void setValue(Object value);

    /**
     * 判断SQL参数的值是不是{@code null}。
     *
     * @return 如果该参数的值是{@code null}则返回{@code true}, 否则返回{@code false}。
     */
    boolean isNull();

    /**
     * 判断SQL参数的值是不是空白。
     *
     * @return 如果该参数的值表示长度为0的字符串则返回{@code true}, 否则返回{@code false}。
     */
    boolean isEmpty();
}
